#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
启动优化模块
用于提高程序启动速度
"""

import sys
import os
import time
from typing import Optional


class StartupOptimizer:
    """启动优化器"""
    
    def __init__(self):
        self.start_time = time.time()
        self._modules_cache = {}
        
    def optimize_imports(self):
        """优化导入速度"""
        if not getattr(sys, 'frozen', False):  # 非打包环境才预编译
            try:
                import compileall
                current_dir = os.path.dirname(os.path.abspath(__file__))
                compileall.compile_dir(current_dir, quiet=1, force=False)  # 不强制重新编译
            except Exception:
                pass

    def lazy_import(self, module_name: str, package: Optional[str] = None):
        """延迟导入模块"""
        if module_name in self._modules_cache:
            return self._modules_cache[module_name]
        
        try:
            if package:
                module = __import__(module_name, fromlist=[package])
            else:
                module = __import__(module_name)
            
            self._modules_cache[module_name] = module
            return module
        except ImportError:
            return None
    
    def optimize_qt_startup(self):
        """优化Qt启动"""
        # 设置Qt环境变量以提高启动速度
        os.environ['QT_AUTO_SCREEN_SCALE_FACTOR'] = '0'
        os.environ['QT_SCALE_FACTOR'] = '1'
        os.environ['QT_FONT_DPI'] = '96'
        
        # 禁用Qt插件缓存验证
        os.environ['QT_NO_GLIB'] = '1'
        
    def optimize_selenium_startup(self):
        """优化Selenium启动"""
        # 设置Chrome选项以提高启动速度
        chrome_options = [
            '--headless=new',
            '--no-sandbox',
            '--disable-dev-shm-usage',
            '--disable-gpu',
            '--disable-extensions',
            '--disable-plugins',
            '--disable-images',
            '--disable-javascript',
            '--disable-web-security',
            '--disable-features=TranslateUI',
            '--disable-ipc-flooding-protection',
            '--disable-renderer-backgrounding',
            '--disable-backgrounding-occluded-windows',
            '--disable-background-timer-throttling',
            '--disable-background-networking',
            '--disable-default-apps',
            '--disable-sync',
            '--disable-translate',
            '--hide-scrollbars',
            '--mute-audio',
            '--no-first-run',
            '--no-default-browser-check',
            '--disable-logging',
            '--disable-log-file',
            '--silent',
            '--log-level=3'
        ]
        # 排除一些不必要的Chrome启动参数，进一步优化
        experimental_options = ['enable-automation']  # 禁用“Chrome正在受到自动测试软件的控制”提示

        return chrome_options, experimental_options
    
    def get_startup_time(self) -> float:
        """获取启动时间"""
        return time.time() - self.start_time
    
    def print_startup_info(self):
        """打印启动信息"""
        startup_time = self.get_startup_time()
        print(f"程序启动耗时: {startup_time:.2f}秒")
        print(f"Python版本: {sys.version}")
        print(f"当前工作目录: {os.getcwd()}")


# 全局启动优化器实例
startup_optimizer = StartupOptimizer()

# 只在导入时执行Qt优化，不再执行 optimize_imports
startup_optimizer.optimize_qt_startup()